
//825.适龄的朋友
class Solution {
public:
    int numFriendRequests(vector<int>& ages) {
        //由题意知道，发送给y需要满足的条件是：0.5*x+7<y<=x即可，因为y<=x则第三个条件必定不会成立
        //x越大y就越大，所以可以使用滑动窗口一个区间中可以发送请求的个数来记录解决
        int hash[121]={0};  //使用hash对ages进行排序使得后面的x和y都是线性递增的
        for(auto e:ages) hash[e]++;
        int ret=0,left=0,tmp=0;   //使用tmp来记录[left，right]之间的人数

        for(int right=0;right<121;right++)
        {
            tmp+=hash[right];   //入窗口
            while(2*left<=right+14)     //确定满足0.5*x+7<y时y的位置，
            tmp-=hash[left++];   //如果不满足就进行出窗口让left++，来找更大的y

            if(left<=right)   //判断y<=x的条件时候满足
            ret+=(tmp-1)*hash[right];  //更新窗口
        }
        return ret;
    }
};